This invention relates to computer-aided animation and particularly to animation authoring using knots defined by animation variables in selected frames.
In computer-aided animation, a pose is a defined set of positions of an animated object. A pose is located in a frame of an animation sequence. Knots specify animation values of an animated object. Curves are the vectors, or travel paths, that are specified by animation values between knots. Animation variables are the sets of numerical values that define and specify inputs into a model of an object. An animator may manual specify values for animation variables at specific frames in time or in poses. Thereafter, values of animation variables may be determined for the remaining time periods through computer-aided interpolation of the defined animation variable values (knots). Frames may be guarded, implying that knots at the guarded frame are invariant.
Embodiments of the invention relate to the conditions wherein there is a guard frame that has no animation variable on the curve of interest, that is, the animation variable (avar) is not associated with a knot at the guarded frame.
In the past, if an animation variable is undefined, that is, not associated with any knot in a first non-guarded frame, then setting the animation variable to a value at a later frame would cause the animation system to automatically apply that animation variable value at the later frame to that of the first frame. This can create unintended discontinuities in the animation variable values.
Some animation techniques have attempted to prevent this error by allowing the animator to set a key frame and to define values for all animation variables at the first frame to lock down initial avar values. This technique increases the number of knots substantially, yielding a larger than desired animation database. Moreover, there is no way in a conventional animation database to distinguish knots that are placed intentionally as part of a pose from other knots. This makes collaboration with other animators difficult because they cannot rely on positioning of all splines, or more generally curves, across guarded frames. What is needed is a mechanism to control positioning of all splines across guarded frames without producing a large and unmanageable animation database.